package main

import "fmt"

func main() {
	// 声明数组
	// 1. 声明后赋值
	var a [3]int   // 全为0 ，长度 3 的整数数组
	fmt.Println(a) // [0 0 0]

	var b [3]string // 空字符串数组
	fmt.Println(b)  //[   ]

	// 2. 直接声明并赋值
	var c = [3]string{"a", "b", "c"} // 数组内容长度不能超过 [] 写定长度 可以短
	fmt.Println(c)                   // [a, b, c]

	// 3. 弹性长度
	var d = [...]string{"q", "w", "e", "r"} // [...]表示自动获取长度， 定义被限制
	fmt.Println(d)                          // [q, w, e, r]
	fmt.Println(len(d))                     // 4

	// 4. 冒号声明
	e := [...]string{"z", "x", "c", "v", "b"} //
	fmt.Println(e)                            // [z, x, c, v, b]
	fmt.Println(len(e))                       // 5

	// 5. 下标初始化
	f := [...]int{0: 1, 1: 2, 3: 4, 9: 10} // before : after   ==> before 为数组下标， after 为对应值， 长度受最大下标定义
	fmt.Println(f)                         // [1 2 0 4 0 0 0 0 0 10]
	fmt.Println(len(f))                    // [10]
}
